package service

import (
	"context"
	coreV1 "k8s.io/api/core/v1"
	metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
)

func GetNamespaceList(clientSet *kubernetes.Clientset) (namespaceList *coreV1.NamespaceList, err error) {
	namespaceList, err = clientSet.CoreV1().Namespaces().List(context.TODO(), metaV1.ListOptions{})
	if err != nil {
		return namespaceList, err
	}
	return namespaceList, nil
}

func GetNamespace(clientSet *kubernetes.Clientset, namespaceName string) (namespaceInfo *coreV1.Namespace, err error) {
	namespaceInfo, err = clientSet.CoreV1().Namespaces().Get(context.TODO(), namespaceName, metaV1.GetOptions{})
	if err != nil {
		return namespaceInfo, err
	}
	return namespaceInfo, nil
}
func CreateNamespace(clientSet *kubernetes.Clientset, request CreateNamespaceRequest) (namespaceInfo *coreV1.Namespace, err error) {
	var namespace coreV1.Namespace
	namespace.Name = request.Name
	namespaceInfo, err = clientSet.CoreV1().Namespaces().Create(context.TODO(), &namespace, metaV1.CreateOptions{})
	if err != nil {
		return namespaceInfo, err
	}
	return namespaceInfo, nil
}

func DeleteNamespace(clientSet *kubernetes.Clientset, namespaceName string) (err error) {
	err = clientSet.CoreV1().Namespaces().Delete(context.TODO(), namespaceName, metaV1.DeleteOptions{})
	if err != nil {
		return err
	}
	return nil
}

//func ApplyNamespace(clientSet *kubernetes.Clientset, namespaceName string) (namespaceInfo *coreV1.Namespace,err error) {
//	namespaceInfo, err = clientSet.CoreV1().Namespaces().Get(context.TODO(), namespaceName, metaV1.GetOptions{})
//	if err != nil {
//		return namespaceInfo, err
//	}
//	namespaceInfo,err = clientSet.CoreV1().Namespaces().Update(context.TODO(),namespaceInfo,metaV1.UpdateOptions{})
//	if err != nil {
//		return namespaceInfo,err
//	}
//	return namespaceInfo,nil
//}
